package com.pe.pgn.clubpgn.domain;

import java.math.BigDecimal;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * @author Edwin Farfan
 * 
 */
@Entity
@Table(name = "clpr_premio_catalogo")
public class ClprPremioCatalogo extends CamposAuditoria {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3949575418502054404L;
	private Long id;
	private ClpdArticulo clpdArticulo;
	private ClpmCatalogo clpmCatalogo;
	private String coCodigoPremio;
	private BigDecimal vaCanjesLimite;
	private BigDecimal vaCanjesLimiteEspejo;
	private BigDecimal vaPuntosRequeridos;
	private BigDecimal vaMontoRequerido;
	private Boolean stPremioCatalogo;
	private BigDecimal vaStockCatalogo;
	private BigDecimal vaStockCatalogoEspejo;
	private BigDecimal vaTiempoMaxEspera;
	private BigDecimal nuCanjesMaxVenta;
	private BigDecimal vaConsumoMinVenta;
	private BigDecimal nuDiasVencimiento;
	private BigDecimal coPremioInstantaneo;

	@Id
	@Column(name = "id")
	@SequenceGenerator(name = "seqpremiocatalogo", sequenceName = "seq_premio_catalogo")
	@GeneratedValue(generator = "seqpremiocatalogo")
	public Long getId() {
		return id;
	}

	@ManyToOne(targetEntity = ClpdArticulo.class)
	@JoinColumn(name = "co_premio")
	public ClpdArticulo getClpdArticulo() {
		return clpdArticulo;
	}

	@ManyToOne(targetEntity = ClpmCatalogo.class)
	@JoinColumn(name = "co_catalogo")
	public ClpmCatalogo getClpmCatalogo() {
		return clpmCatalogo;
	}

	@Column(name = "co_codigo_premio")
	public String getCoCodigoPremio() {
		return coCodigoPremio;
	}

	@Column(name = "va_canjes_limite")
	public BigDecimal getVaCanjesLimite() {
		return vaCanjesLimite;
	}
	
	@Column(name = "va_canjes_limite_espejo")
	public BigDecimal getVaCanjesLimiteEspejo() {
		return vaCanjesLimiteEspejo;
	}

	@Column(name = "va_puntos_requeridos")
	public BigDecimal getVaPuntosRequeridos() {
		return vaPuntosRequeridos;
	}

	@Column(name = "va_monto_requerido")
	public BigDecimal getVaMontoRequerido() {
		return vaMontoRequerido;
	}

	@Column(name = "va_stock_catalogo")
	public BigDecimal getVaStockCatalogo() {
		return vaStockCatalogo;
	}
	
	@Column(name = "va_stock_catalogo_espejo")
	public BigDecimal getVaStockCatalogoEspejo() {
		return vaStockCatalogoEspejo;
	}
	
	

	@Column(name = "st_premio_catalogo", nullable = false)
	@Type(type = "yes_no")
	public Boolean getStPremioCatalogo() {
		return stPremioCatalogo;
	}

	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

	@Column(name = "da_fecha_creacion", updatable = false, nullable = false)
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

	@Column(name = "da_fecha_modificacion")
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}
	
	
	@Column(name = "va_tiempo_max_espera")
	public BigDecimal getVaTiempoMaxEspera() {
		return vaTiempoMaxEspera;
	}
	
	
	
	@Column(name = "co_premio_instantaneo")
	public BigDecimal getCoPremioInstantaneo() {
		return coPremioInstantaneo;
	}


	
	@Column(name = "nu_canjes_max_venta")
	public BigDecimal getNuCanjesMaxVenta() {
		return nuCanjesMaxVenta;
	}
	@Column(name = "nu_dias_vencimiento")
	public BigDecimal getNuDiasVencimiento() {
		return nuDiasVencimiento;
	}
	
	@Column(name = "va_consumo_min_venta")
	public BigDecimal getVaConsumoMinVenta() {
		return vaConsumoMinVenta;
	}
	



	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 17;
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (getClass() != obj.getClass())
			return false;
		ClprPremioCatalogo other = (ClprPremioCatalogo) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "ID Premio: " + this.id.toString();
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setClpdArticulo(ClpdArticulo clpdArticulo) {
		this.clpdArticulo = clpdArticulo;
	}

	public void setClpmCatalogo(ClpmCatalogo clpmCatalogo) {
		this.clpmCatalogo = clpmCatalogo;
	}

	public void setCoCodigoPremio(String coCodigoPremio) {
		this.coCodigoPremio = coCodigoPremio;
	}

	public void setVaCanjesLimite(BigDecimal vaCanjesLimite) {
		this.vaCanjesLimite = vaCanjesLimite;
	}

	public void setVaPuntosRequeridos(BigDecimal vaPuntosRequeridos) {
		this.vaPuntosRequeridos = vaPuntosRequeridos;
	}

	public void setVaMontoRequerido(BigDecimal vaMontoRequerido) {
		this.vaMontoRequerido = vaMontoRequerido;
	}

	public void setStPremioCatalogo(Boolean stPremioCatalogo) {
		this.stPremioCatalogo = stPremioCatalogo;
	}

	public void setVaCanjesLimiteEspejo(BigDecimal vaCanjesLimiteEspejo) {
		this.vaCanjesLimiteEspejo = vaCanjesLimiteEspejo;
	}

	public void setVaStockCatalogo(BigDecimal vaStockCatalogo) {
		this.vaStockCatalogo = vaStockCatalogo;
	}
	
	public void setVaStockCatalogoEspejo(BigDecimal vaStockCatalogoEspejo) {
		this.vaStockCatalogoEspejo = vaStockCatalogoEspejo;
	}		


	public void setNuCanjesMaxVenta(BigDecimal nuCanjesMaxVenta) {
		this.nuCanjesMaxVenta = nuCanjesMaxVenta;
	}


	public void setVaConsumoMinVenta(BigDecimal vaConsumoMinVenta) {
		this.vaConsumoMinVenta = vaConsumoMinVenta;
	}

	public void setNuDiasVencimiento(BigDecimal nuDiasVencimiento) {
		this.nuDiasVencimiento = nuDiasVencimiento;
	}
	public void setVaTiempoMaxEspera(BigDecimal vaTiempoMaxEspera) {
		this.vaTiempoMaxEspera = vaTiempoMaxEspera;
	}

	public void setCoPremioInstantaneo(BigDecimal coPremioInstantaneo) {
		this.coPremioInstantaneo = coPremioInstantaneo;
	}

}
